package com.stateflow.facade.common.util;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * Created by weiqingming on 2019/6/25.
 * 日期工具
 */
public class DateUtils {

    public static final String FORMATA = "yyyy-MM-dd";
    public static final String FORMATB = "yyyy-MM-dd HH:mm";
    public static final String FORMATC = "yyyy-MM-dd HH:mm:ss";


    /**
     * Date转String
     * @param date
     * @return
     */
    public static String dateToStr(Date date) {
        return dateToStr(date, FORMATC);
    }

    /**
     * Date转String
     * @param date
     * @param format
     * @return
     */
    public static String dateToStr(Date date, String format) {
        try {
            SimpleDateFormat dateFormat = new SimpleDateFormat(format);
            return dateFormat.format(date);
        }catch (Exception e) {
            return null;
        }
    }

    /**
     * String转Date
     * @param date
     * @return
     */
    public static Date strToDate(String date) {
        return strToDate(date, FORMATC);
    }
    
    /**
     * String转Date
     * @param date
     * @param format
     * @return
     */
    public static Date strToDate(String date, String format) {
        try {
            SimpleDateFormat dateFormat = new SimpleDateFormat(format);
            return dateFormat.parse(date);
        }catch (Exception e) {
            return null;
        }
    }

    /**
     * 计算两个日期的时间差，以 天 为单位
     * @param date1
     * @param date2
     * @return
     */
    public static int dayDiff(Date date1, Date date2) {
        int i = (int) ((date1.getTime() - date2.getTime()) / (1000 * 3600 * 24));
        return i;
    }

    /**
     * 计算两个日期的时间差，以 分钟 为单位
     * @param date1
     * @param date2
     * @return
     */
    public static int minuteDiff(Date date1, Date date2) {
        int i = (int) ((date1.getTime() - date2.getTime()) / (1000 * 60));
        return i;
    }

    /**
     * 计算两个日期的时间差，以 秒 为单位
     * @param date1
     * @param date2
     * @return
     */
    public static int secondsDiff(Date date1, Date date2) {
        int i = (int) ((date1.getTime() - date2.getTime()) / (1000));
        return i;
    }

    /**
     * 获取相应数值前后的日期
     * @param date
     * @param day
     * @return
     */
    public static Date getSomeDay(Date date, int day){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, day);
        return calendar.getTime();
    }
}
